/* gradients don't works */

/*
 * SpiderpigOS
 * Copyright (C) 2009 - 2010 Davide Gessa
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
#include "include/render.h"

#include <types.h>
#include <klibc/malloc.h>
#include <klibc/string.h>
#include "../../kernel/drivers/video/vesa/vesa.h"


/* default font */
char default_font_8x16[255][16] = { 
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
	{ 0x0, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0xa, 0xa, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x24, 0x24, 0x7e, 0x24, 0x24, 0x24, 0x7e, 0x24, 0x24, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x8, 0x1c, 0x2a, 0xa, 0xc, 0x18, 0x28, 0x2a, 0x1c, 0x8, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x4, 0x8a, 0x4a, 0x24, 0x10, 0x48, 0xa4, 0xa2, 0x40, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x4, 0xa, 0xa, 0xa, 0x4, 0x2a, 0x12, 0x2c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x4, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x4, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x2, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0xa, 0x4, 0xa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x8, 0x3e, 0x8, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x2, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x10, 0x10, 0x10, 0x8, 0x8, 0x4, 0x4, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x8, 0xe, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x1c, 0x22, 0x20, 0x20, 0x10, 0x8, 0x4, 0x2, 0x3e, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x1c, 0x22, 0x20, 0x20, 0x18, 0x20, 0x20, 0x22, 0x1c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x10, 0x18, 0x14, 0x14, 0x12, 0x3e, 0x10, 0x10, 0x10, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x3e, 0x2, 0x2, 0x1e, 0x22, 0x20, 0x20, 0x22, 0x1c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x10, 0x8, 0x4, 0x2, 0x1e, 0x22, 0x22, 0x22, 0x1c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x3e, 0x20, 0x10, 0x10, 0x8, 0x8, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x1c, 0x22, 0x22, 0x22, 0x3c, 0x20, 0x10, 0x8, 0x4, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x4, 0x4, 0x2, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x8, 0x4, 0x2, 0x4, 0x8, 0x10, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x0, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x4, 0x8, 0x10, 0x8, 0x4, 0x2, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x1c, 0x22, 0x22, 0x20, 0x10, 0x8, 0x8, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0xf0, 0x8, 0x4, 0x62, 0x92, 0x92, 0xe2, 0x4, 0x8, 0xf0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x8, 0x8, 0x14, 0x14, 0x22, 0x3e, 0x41, 0x41, 0x41, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x3e, 0x42, 0x42, 0x42, 0x3e, 0x42, 0x42, 0x42, 0x3e, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x3c, 0x42, 0x2, 0x2, 0x2, 0x2, 0x2, 0x42, 0x3c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x1e, 0x22, 0x42, 0x42, 0x42, 0x42, 0x42, 0x22, 0x1e, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x3e, 0x2, 0x2, 0x2, 0x1e, 0x2, 0x2, 0x2, 0x3e, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x3e, 0x2, 0x2, 0x2, 0x1e, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x3c, 0x42, 0x2, 0x2, 0x72, 0x42, 0x42, 0x42, 0x3c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42, 0x42, 0x42, 0x42, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x9, 0x9, 0x6, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x42, 0x22, 0x12, 0xa, 0x6, 0xa, 0x12, 0x22, 0x42, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x3e, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x82, 0xc6, 0xc6, 0xaa, 0xaa, 0x92, 0x92, 0x82, 0x82, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x42, 0x42, 0x46, 0x4a, 0x4a, 0x52, 0x62, 0x42, 0x42, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x3e, 0x42, 0x42, 0x42, 0x3e, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42, 0x52, 0x62, 0x3c, 0x40, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x3e, 0x42, 0x42, 0x42, 0x3e, 0x12, 0x22, 0x42, 0x42, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x1c, 0x22, 0x2, 0x2, 0x1c, 0x20, 0x20, 0x22, 0x1c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x3e, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x41, 0x41, 0x22, 0x22, 0x22, 0x14, 0x14, 0x14, 0x8, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x1, 0x1, 0x22, 0x22, 0x52, 0x54, 0x54, 0x88, 0x88, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x41, 0x41, 0x22, 0x14, 0x8, 0x14, 0x22, 0x41, 0x41, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x41, 0x41, 0x22, 0x14, 0x8, 0x8, 0x8, 0x8, 0x8, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x7f, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1, 0x7f, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x6, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x6, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x2, 0x2, 0x2, 0x4, 0x4, 0x8, 0x8, 0x10, 0x10, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x6, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x6, 0x0, 0x0 },
	{ 0x0, 0x8, 0x14, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x2, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x20, 0x3c, 0x22, 0x22, 0x3c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x2, 0x2, 0x2, 0x1e, 0x22, 0x22, 0x22, 0x22, 0x1e, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x22, 0x2, 0x2, 0x22, 0x1c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x20, 0x20, 0x20, 0x3c, 0x22, 0x22, 0x22, 0x22, 0x3c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x22, 0x3e, 0x2, 0x22, 0x1c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x4, 0x2, 0x2, 0x6, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x3c, 0x20, 0x1c, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x2, 0x2, 0x2, 0x1a, 0x26, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x1, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x2, 0x2, 0x2, 0x22, 0x12, 0xa, 0xe, 0x12, 0x22, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6e, 0x92, 0x92, 0x92, 0x92, 0x92, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a, 0x26, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x22, 0x22, 0x22, 0x22, 0x1e, 0x2, 0x2, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c, 0x22, 0x22, 0x22, 0x22, 0x3c, 0x20, 0x20, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x12, 0x4, 0x8, 0x12, 0xc, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x2, 0x2, 0x6, 0x2, 0x2, 0x2, 0x2, 0x4, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x32, 0x2c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x14, 0x14, 0x8, 0x8, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x12, 0xc, 0xc, 0x12, 0x12, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x12, 0x12, 0x12, 0x12, 0x1c, 0x10, 0xe, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x10, 0x8, 0x4, 0x2, 0x1e, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x8, 0x4, 0x4, 0x4, 0x4, 0x2, 0x4, 0x4, 0x4, 0x4, 0x8, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x2, 0x4, 0x4, 0x4, 0x4, 0x8, 0x4, 0x4, 0x4, 0x4, 0x2, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x4c, 0x32, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x1c, 0x22, 0x2, 0xf, 0x2, 0xf, 0x2, 0x22, 0x1c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x2, 0x0, 0x0, 0x0 },
	{ 0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14, 0xa, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x1f, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x1f, 0x4, 0x4, 0x4, 0x1f, 0x4, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x86, 0x49, 0x26, 0x10, 0x8, 0x4, 0x32, 0xc9, 0x30, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x14, 0x8, 0x1c, 0x22, 0x2, 0x2, 0x1c, 0x20, 0x20, 0x22, 0x1c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x4, 0x2, 0x4, 0x8, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x0, 0x0 },
	{ 0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x0, 0x0 },
	{ 0x0, 0x14, 0x8, 0x7f, 0x40, 0x20, 0x10, 0x8, 0x4, 0x2, 0x1, 0x7f, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x0, 0x0 },
	{ 0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x4, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x4, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0xa, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0xa, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x1e, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0xb7, 0x52, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x14, 0x8, 0x0, 0xc, 0x12, 0x4, 0x8, 0x12, 0xc, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x8, 0x10, 0x8, 0x4, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x0, 0x0 },
	{ 0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x14, 0x8, 0x0, 0x1e, 0x10, 0x8, 0x4, 0x2, 0x1e, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x1c, 0x22, 0x2, 0x2, 0x22, 0x1c, 0x4, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x1c, 0x22, 0x2, 0x4, 0x1f, 0x4, 0x4, 0x2, 0x3e, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x22, 0x1c, 0x22, 0x22, 0x1c, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x22, 0x22, 0x22, 0x14, 0x3e, 0x8, 0x3e, 0x8, 0x8, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x1c, 0x22, 0x4, 0xa, 0x12, 0x24, 0x28, 0x10, 0x22, 0x1c, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x78, 0x84, 0x32, 0xa, 0xa, 0x32, 0x84, 0x78, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x6, 0x8, 0xe, 0xa, 0xe, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28, 0x14, 0xa, 0x14, 0x28, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x7c, 0x82, 0x9a, 0x9a, 0xaa, 0x82, 0x7c, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x4, 0xa, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x8, 0x3e, 0x8, 0x8, 0x0, 0x3e, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x2, 0x5, 0x4, 0x2, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x3, 0x4, 0x2, 0x4, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x4, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12, 0x12, 0x12, 0x12, 0x12, 0x2e, 0x2, 0x2, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x3c, 0x2a, 0x2a, 0x2c, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x2, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x4, 0x6, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0xe, 0xa, 0xa, 0xa, 0xe, 0x0, 0xe, 0x0, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0x14, 0x28, 0x14, 0xa, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x86, 0x44, 0xa4, 0xd4, 0xa8, 0xe4, 0x82, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x86, 0x44, 0x24, 0xf4, 0x88, 0x44, 0xe2, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0x88, 0x4c, 0xa8, 0xd6, 0xa8, 0xe4, 0x82, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x8, 0x8, 0x8, 0x4, 0x2, 0x22, 0x22, 0x1c, 0x0 },
	{ 0x0, 0x0, 0x4, 0x8, 0x8, 0x8, 0x14, 0x14, 0x22, 0x3e, 0x41, 0x41, 0x41, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x10, 0x8, 0x8, 0x8, 0x14, 0x14, 0x22, 0x3e, 0x41, 0x41, 0x41, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x8, 0x14, 0x0, 0x8, 0x14, 0x14, 0x22, 0x3e, 0x41, 0x41, 0x41, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x2c, 0x1a, 0x8, 0x8, 0x14, 0x14, 0x22, 0x3e, 0x41, 0x41, 0x41, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x22, 0x0, 0x8, 0x8, 0x14, 0x14, 0x22, 0x3e, 0x41, 0x41, 0x41, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x8, 0x14, 0x8, 0x8, 0x14, 0x14, 0x22, 0x3e, 0x41, 0x41, 0x41, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0xe0, 0x30, 0x28, 0x28, 0xfc, 0x24, 0x22, 0x22, 0xe1, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x3c, 0x42, 0x2, 0x2, 0x2, 0x2, 0x2, 0x42, 0x3c, 0x10, 0x8, 0x0 },
	{ 0x0, 0x0, 0x4, 0x8, 0x3e, 0x2, 0x2, 0x2, 0x1e, 0x2, 0x2, 0x2, 0x3e, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x10, 0x8, 0x3e, 0x2, 0x2, 0x2, 0x1e, 0x2, 0x2, 0x2, 0x3e, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x8, 0x14, 0x3e, 0x2, 0x2, 0x2, 0x1e, 0x2, 0x2, 0x2, 0x3e, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x22, 0x0, 0x3e, 0x2, 0x2, 0x2, 0x1e, 0x2, 0x2, 0x2, 0x3e, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x1, 0x2, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x4, 0x2, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x2, 0x5, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x5, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x1e, 0x22, 0x42, 0x42, 0x4f, 0x42, 0x42, 0x22, 0x1e, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x4c, 0x32, 0x42, 0x42, 0x46, 0x4a, 0x4a, 0x52, 0x62, 0x42, 0x42, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x8, 0x10, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x10, 0x8, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x18, 0x24, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x4c, 0x32, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x24, 0x0, 0x3c, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x14, 0x8, 0x14, 0x22, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x7c, 0x62, 0x52, 0x52, 0x4a, 0x4a, 0x46, 0x46, 0x3e, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x8, 0x10, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x10, 0x8, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x18, 0x24, 0x0, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x24, 0x0, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x10, 0x8, 0x41, 0x41, 0x22, 0x14, 0x8, 0x8, 0x8, 0x8, 0x8, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x2, 0x2, 0x3e, 0x42, 0x42, 0x3e, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0xe, 0x12, 0x12, 0xa, 0x12, 0x22, 0x22, 0x22, 0x1a, 0x2, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x8, 0x10, 0x0, 0x1c, 0x20, 0x3c, 0x22, 0x22, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x10, 0x8, 0x0, 0x1c, 0x20, 0x3c, 0x22, 0x22, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x8, 0x14, 0x0, 0x1c, 0x20, 0x3c, 0x22, 0x22, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x28, 0x14, 0x0, 0x1c, 0x20, 0x3c, 0x22, 0x22, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x24, 0x0, 0x0, 0x1c, 0x20, 0x3c, 0x22, 0x22, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x8, 0x14, 0x8, 0x0, 0x1c, 0x20, 0x3c, 0x22, 0x22, 0x3c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc, 0x20, 0xfc, 0x22, 0x22, 0xfc, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x22, 0x2, 0x2, 0x22, 0x1c, 0x8, 0x4, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x4, 0x8, 0x0, 0x1c, 0x22, 0x3e, 0x2, 0x22, 0x1c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x10, 0x8, 0x0, 0x1c, 0x22, 0x3e, 0x2, 0x22, 0x1c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x8, 0x14, 0x0, 0x1c, 0x22, 0x3e, 0x2, 0x22, 0x1c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x1c, 0x22, 0x3e, 0x2, 0x22, 0x1c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x1, 0x2, 0x0, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x8, 0x4, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x4, 0xa, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0xa, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0xa, 0x4, 0xa, 0x10, 0x1c, 0x22, 0x22, 0x22, 0x1c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x2c, 0x1a, 0x0, 0x1a, 0x26, 0x22, 0x22, 0x22, 0x22, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x4, 0x8, 0x0, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x10, 0x8, 0x0, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x8, 0x14, 0x0, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x2c, 0x1a, 0x0, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x1c, 0x22, 0x22, 0x22, 0x22, 0x1c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x3e, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c, 0x32, 0x2a, 0x2a, 0x26, 0x1e, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x4, 0x8, 0x0, 0x22, 0x22, 0x22, 0x22, 0x32, 0x2c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x10, 0x8, 0x0, 0x22, 0x22, 0x22, 0x22, 0x32, 0x2c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x8, 0x14, 0x0, 0x22, 0x22, 0x22, 0x22, 0x32, 0x2c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x22, 0x0, 0x0, 0x22, 0x22, 0x22, 0x22, 0x32, 0x2c, 0x0, 0x0, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x8, 0x4, 0x0, 0x12, 0x12, 0x12, 0x12, 0x12, 0x1c, 0x10, 0xe, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x2, 0x1e, 0x22, 0x22, 0x22, 0x22, 0x1e, 0x2, 0x2, 0x0 },
	{ 0x0, 0x0, 0x0, 0x0, 0x12, 0x0, 0x0, 0x12, 0x12, 0x12, 0x12, 0x12, 0x1c, 0x10, 0xe, 0x0 }
	};
	
char default_font_8x8[128][8] = { 
					{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0000 (nul)
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0001
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0002
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0003
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0004
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0005
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0006
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0007
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0008
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0009
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //000A
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //000B
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //000C
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //000D
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //000E
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //000F
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0010
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0011
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0012
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0013
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0014
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0015
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0016
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0017
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0018
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0019
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //001A
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //001B
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //001C
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //001D
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //001E
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //001F
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0020 (space)
                    { 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00}, //0021 (!)
                    { 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //0022 (")
                    { 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36, 0x00}, //0023 (#)
                    { 0x0C, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x0C, 0x00}, //0024 ($)
                    { 0x00, 0x63, 0x33, 0x18, 0x0C, 0x66, 0x63, 0x00}, //0025 (%)
                    { 0x1C, 0x36, 0x1C, 0x6E, 0x3B, 0x33, 0x6E, 0x00}, //0026 (&)
                    { 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00}, //0027 (')
                    { 0x18, 0x0C, 0x06, 0x06, 0x06, 0x0C, 0x18, 0x00}, //0028 (()
                    { 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06, 0x00}, //0029 ())
                    { 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00}, //002A (*)
                    { 0x00, 0x0C, 0x0C, 0x3F, 0x0C, 0x0C, 0x00, 0x00}, //002B (+)
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x06}, //002C (,)
                    { 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00}, //002D (-)
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00}, //002E (.)
                    { 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x00}, //002F (/)
                    { 0x3E, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x3E, 0x00}, //0030 (0)
                    { 0x0C, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F, 0x00}, //0031 (1)
                    { 0x1E, 0x33, 0x30, 0x1C, 0x06, 0x33, 0x3F, 0x00}, //0032 (2)
                    { 0x1E, 0x33, 0x30, 0x1C, 0x30, 0x33, 0x1E, 0x00}, //0033 (3)
                    { 0x38, 0x3C, 0x36, 0x33, 0x7F, 0x30, 0x78, 0x00}, //0034 (4)
                    { 0x3F, 0x03, 0x1F, 0x30, 0x30, 0x33, 0x1E, 0x00}, //0035 (5)
                    { 0x1C, 0x06, 0x03, 0x1F, 0x33, 0x33, 0x1E, 0x00}, //0036 (6)
                    { 0x3F, 0x33, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x00}, //0037 (7)
                    { 0x1E, 0x33, 0x33, 0x1E, 0x33, 0x33, 0x1E, 0x00}, //0038 (8)
                    { 0x1E, 0x33, 0x33, 0x3E, 0x30, 0x18, 0x0E, 0x00}, //0039 (9)
                    { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x00}, //003A (:)
                    { 0x00, 0x0C, 0x0C, 0x00, 0x00, 0x0C, 0x0C, 0x06}, //003B (;)
                    { 0x18, 0x0C, 0x06, 0x03, 0x06, 0x0C, 0x18, 0x00}, //003C (<)
                    { 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00}, //003D (=)
                    { 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06, 0x00}, //003E (>)
                    { 0x1E, 0x33, 0x30, 0x18, 0x0C, 0x00, 0x0C, 0x00}, //003F (?)
                    { 0x3E, 0x63, 0x7B, 0x7B, 0x7B, 0x03, 0x1E, 0x00}, //0040 (@)
                    { 0x0C, 0x1E, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x00}, //0041 (A)
                    { 0x3F, 0x66, 0x66, 0x3E, 0x66, 0x66, 0x3F, 0x00}, //0042 (B)
                    { 0x3C, 0x66, 0x03, 0x03, 0x03, 0x66, 0x3C, 0x00}, //0043 (C)
                    { 0x1F, 0x36, 0x66, 0x66, 0x66, 0x36, 0x1F, 0x00}, //0044 (D)
                    { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x46, 0x7F, 0x00}, //0045 (E)
                    { 0x7F, 0x46, 0x16, 0x1E, 0x16, 0x06, 0x0F, 0x00}, //0046 (F)
                    { 0x3C, 0x66, 0x03, 0x03, 0x73, 0x66, 0x7C, 0x00}, //0047 (G)
                    { 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x00}, //0048 (H)
                    { 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, //0049 (I)
                    { 0x78, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E, 0x00}, //004A (J)
                    { 0x67, 0x66, 0x36, 0x1E, 0x36, 0x66, 0x67, 0x00}, //004B (K)
                    { 0x0F, 0x06, 0x06, 0x06, 0x46, 0x66, 0x7F, 0x00}, //004C (L)
                    { 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0x00}, //004D (M)
                    { 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x63, 0x00}, //004E (N)
                    { 0x1C, 0x36, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00}, //004F (O)
                    { 0x3F, 0x66, 0x66, 0x3E, 0x06, 0x06, 0x0F, 0x00}, //0050 (P)
                    { 0x1E, 0x33, 0x33, 0x33, 0x3B, 0x1E, 0x38, 0x00}, //0051 (Q)
                    { 0x3F, 0x66, 0x66, 0x3E, 0x36, 0x66, 0x67, 0x00}, //0052 (R)
                    { 0x1E, 0x33, 0x07, 0x0E, 0x38, 0x33, 0x1E, 0x00}, //0053 (S)
                    { 0x3F, 0x2D, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, //0054 (T)
                    { 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, 0x00}, //0055 (U)
                    { 0x33, 0x33, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, //0056 (V)
                    { 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0x00}, //0057 (W)
                    { 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0x00}, //0058 (X)
                    { 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x0C, 0x1E, 0x00}, //0059 (Y)
                    { 0x7F, 0x63, 0x31, 0x18, 0x4C, 0x66, 0x7F, 0x00}, //005A (Z)
                    { 0x1E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x1E, 0x00}, //005B ([)
                    { 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0x00}, //005C (\)
                    { 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E, 0x00}, //005D (])
                    { 0x08, 0x1C, 0x36, 0x63, 0x00, 0x00, 0x00, 0x00}, //005E (^)
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF}, //005F (_)
                    { 0x0C, 0x0C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00}, //0060 (`)
                    { 0x00, 0x00, 0x1E, 0x30, 0x3E, 0x33, 0x6E, 0x00}, //0061 (a)
                    { 0x07, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3B, 0x00}, //0062 (b)
                    { 0x00, 0x00, 0x1E, 0x33, 0x03, 0x33, 0x1E, 0x00}, //0063 (c)
                    { 0x38, 0x30, 0x30, 0x3e, 0x33, 0x33, 0x6E, 0x00}, //0064 (d)
                    { 0x00, 0x00, 0x1E, 0x33, 0x3f, 0x03, 0x1E, 0x00}, //0065 (e)
                    { 0x1C, 0x36, 0x06, 0x0f, 0x06, 0x06, 0x0F, 0x00}, //0066 (f)
                    { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x1F}, //0067 (g)
                    { 0x07, 0x06, 0x36, 0x6E, 0x66, 0x66, 0x67, 0x00}, //0068 (h)
                    { 0x0C, 0x00, 0x0E, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, //0069 (i)
                    { 0x30, 0x00, 0x30, 0x30, 0x30, 0x33, 0x33, 0x1E}, //006A (j)
                    { 0x07, 0x06, 0x66, 0x36, 0x1E, 0x36, 0x67, 0x00}, //006B (k)
                    { 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1E, 0x00}, //006C (l)
                    { 0x00, 0x00, 0x33, 0x7F, 0x7F, 0x6B, 0x63, 0x00}, //006D (m)
                    { 0x00, 0x00, 0x1F, 0x33, 0x33, 0x33, 0x33, 0x00}, //006E (n)
                    { 0x00, 0x00, 0x1E, 0x33, 0x33, 0x33, 0x1E, 0x00}, //006F (o)
                    { 0x00, 0x00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F}, //0070 (p)
                    { 0x00, 0x00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78}, //0071 (q)
                    { 0x00, 0x00, 0x3B, 0x6E, 0x66, 0x06, 0x0F, 0x00}, //0072 (r)
                    { 0x00, 0x00, 0x3E, 0x03, 0x1E, 0x30, 0x1F, 0x00}, //0073 (s)
                    { 0x08, 0x0C, 0x3E, 0x0C, 0x0C, 0x2C, 0x18, 0x00}, //0074 (t)
                    { 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0x6E, 0x00}, //0075 (u)
                    { 0x00, 0x00, 0x33, 0x33, 0x33, 0x1E, 0x0C, 0x00}, //0076 (v)
                    { 0x00, 0x00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0x00}, //0077 (w)
                    { 0x00, 0x00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x00}, //0078 (x)
                    { 0x00, 0x00, 0x33, 0x33, 0x33, 0x3E, 0x30, 0x1F}, //0079 (y)
                    { 0x00, 0x00, 0x3F, 0x19, 0x0C, 0x26, 0x3F, 0x00}, //007A (z)
                    { 0x38, 0x0C, 0x0C, 0x07, 0x0C, 0x0C, 0x38, 0x00}, //007B ({)
                    { 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00}, //007C (|)
                    { 0x07, 0x0C, 0x0C, 0x38, 0x0C, 0x0C, 0x07, 0x00}, //007D (})
                    { 0x6E, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //007E (~)
                    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} }; //007F

/*
char default_font_8x8[128][8] = { 
  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 
  { 0x00, 0x3E, 0x41, 0x55, 0x41, 0x55, 0x49, 0x3E }, 
  { 0x00, 0x3E, 0x7F, 0x6B, 0x7F, 0x6B, 0x77, 0x3E }, 
  { 0x00, 0x22, 0x77, 0x7F, 0x7F, 0x3E, 0x1C, 0x08 }, 
  { 0x00, 0x08, 0x1C, 0x3E, 0x7F, 0x3E, 0x1C, 0x08 }, 
  { 0x00, 0x08, 0x1C, 0x2A, 0x7F, 0x2A, 0x08, 0x1C }, 
  { 0x00, 0x08, 0x1C, 0x3E, 0x7F, 0x3E, 0x08, 0x1C }, 
  { 0x00, 0x00, 0x1C, 0x3E, 0x3E, 0x3E, 0x1C, 0x00 }, 
  { 0xFF, 0xFF, 0xE3, 0xC1, 0xC1, 0xC1, 0xE3, 0xFF }, 
  { 0x00, 0x00, 0x1C, 0x22, 0x22, 0x22, 0x1C, 0x00 }, 
  { 0xFF, 0xFF, 0xE3, 0xDD, 0xDD, 0xDD, 0xE3, 0xFF }, 
  { 0x00, 0x0F, 0x03, 0x05, 0x39, 0x48, 0x48, 0x30 }, 
  { 0x00, 0x08, 0x3E, 0x08, 0x1C, 0x22, 0x22, 0x1C }, 
  { 0x00, 0x18, 0x14, 0x10, 0x10, 0x30, 0x70, 0x60 }, 
  { 0x00, 0x0F, 0x19, 0x11, 0x13, 0x37, 0x76, 0x60 }, 
  { 0x00, 0x08, 0x2A, 0x1C, 0x77, 0x1C, 0x2A, 0x08 }, 
  { 0x00, 0x60, 0x78, 0x7E, 0x7F, 0x7E, 0x78, 0x60 }, 
  { 0x00, 0x03, 0x0F, 0x3F, 0x7F, 0x3F, 0x0F, 0x03 }, 
  { 0x00, 0x08, 0x1C, 0x2A, 0x08, 0x2A, 0x1C, 0x08 }, 
  { 0x00, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x66 }, 
  { 0x00, 0x3F, 0x65, 0x65, 0x3D, 0x05, 0x05, 0x05 }, 
  { 0x00, 0x0C, 0x32, 0x48, 0x24, 0x12, 0x4C, 0x30 }, 
  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x7F }, 
  { 0x00, 0x08, 0x1C, 0x2A, 0x08, 0x2A, 0x1C, 0x3E }, 
  { 0x00, 0x08, 0x1C, 0x3E, 0x7F, 0x1C, 0x1C, 0x1C }, 
  { 0x00, 0x1C, 0x1C, 0x1C, 0x7F, 0x3E, 0x1C, 0x08 }, 
  { 0x00, 0x08, 0x0C, 0x7E, 0x7F, 0x7E, 0x0C, 0x08 }, 
  { 0x00, 0x08, 0x18, 0x3F, 0x7F, 0x3F, 0x18, 0x08 }, 
  { 0x00, 0x00, 0x00, 0x70, 0x70, 0x70, 0x7F, 0x7F }, 
  { 0x00, 0x00, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00 }, 
  { 0x00, 0x08, 0x1C, 0x1C, 0x3E, 0x3E, 0x7F, 0x7F }, 
  { 0x00, 0x7F, 0x7F, 0x3E, 0x3E, 0x1C, 0x1C, 0x08 }, 
  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 
  { 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18 }, 
  { 0x00, 0x36, 0x36, 0x14, 0x00, 0x00, 0x00, 0x00 }, 
  { 0x00, 0x36, 0x36, 0x7F, 0x36, 0x7F, 0x36, 0x36 }, 
  { 0x00, 0x08, 0x1E, 0x20, 0x1C, 0x02, 0x3C, 0x08 }, 
  { 0x00, 0x60, 0x66, 0x0C, 0x18, 0x30, 0x66, 0x06 }, 
  { 0x00, 0x3C, 0x66, 0x3C, 0x28, 0x65, 0x66, 0x3F }, 
  { 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00 }, 
  { 0x00, 0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60 }, 
  { 0x00, 0x06, 0x0C, 0x18, 0x18, 0x18, 0x0C, 0x06 }, 
  { 0x00, 0x00, 0x36, 0x1C, 0x7F, 0x1C, 0x36, 0x00 }, 
  { 0x00, 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00 }, 
  { 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x60 }, 
  { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00 }, 
  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60 }, 
  { 0x00, 0x00, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x00 }, 
  { 0x00, 0x3C, 0x66, 0x6E, 0x76, 0x66, 0x66, 0x3C }, 
  { 0x00, 0x18, 0x18, 0x38, 0x18, 0x18, 0x18, 0x7E }, 
  { 0x00, 0x3C, 0x66, 0x06, 0x0C, 0x30, 0x60, 0x7E }, 
  { 0x00, 0x3C, 0x66, 0x06, 0x1C, 0x06, 0x66, 0x3C }, 
  { 0x00, 0x0C, 0x1C, 0x2C, 0x4C, 0x7E, 0x0C, 0x0C }, 
  { 0x00, 0x7E, 0x60, 0x7C, 0x06, 0x06, 0x66, 0x3C }, 
  { 0x00, 0x3C, 0x66, 0x60, 0x7C, 0x66, 0x66, 0x3C }, 
  { 0x00, 0x7E, 0x66, 0x0C, 0x0C, 0x18, 0x18, 0x18 }, 
  { 0x00, 0x3C, 0x66, 0x66, 0x3C, 0x66, 0x66, 0x3C }, 
  { 0x00, 0x3C, 0x66, 0x66, 0x3E, 0x06, 0x66, 0x3C }, 
  { 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00 }, 
  { 0x00, 0x00, 0x18, 0x18, 0x00, 0x18, 0x18, 0x30 }, 
  { 0x00, 0x06, 0x0C, 0x18, 0x30, 0x18, 0x0C, 0x06 }, 
  { 0x00, 0x00, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x00 }, 
  { 0x00, 0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60 }, 
  { 0x00, 0x3C, 0x66, 0x06, 0x1C, 0x18, 0x00, 0x18 }, 
  { 0x00, 0x38, 0x44, 0x5C, 0x58, 0x42, 0x3C, 0x00 }, 
  { 0x00, 0x3C, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66 }, 
  { 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x66, 0x66, 0x7C }, 
  { 0x00, 0x3C, 0x66, 0x60, 0x60, 0x60, 0x66, 0x3C }, 
  { 0x00, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7C }, 
  { 0x00, 0x7E, 0x60, 0x60, 0x7C, 0x60, 0x60, 0x7E }, 
  { 0x00, 0x7E, 0x60, 0x60, 0x7C, 0x60, 0x60, 0x60 }, 
  { 0x00, 0x3C, 0x66, 0x60, 0x60, 0x6E, 0x66, 0x3C }, 
  { 0x00, 0x66, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66 }, 
  { 0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C }, 
  { 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x6C, 0x6C, 0x38 }, 
  { 0x00, 0x66, 0x6C, 0x78, 0x70, 0x78, 0x6C, 0x66 }, 
  { 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7E }, 
  { 0x00, 0x63, 0x77, 0x7F, 0x6B, 0x63, 0x63, 0x63 }, 
  { 0x00, 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x63, 0x63 }, 
  { 0x00, 0x3C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C }, 
  { 0x00, 0x7C, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60 }, 
  { 0x00, 0x3C, 0x66, 0x66, 0x66, 0x6E, 0x3C, 0x06 }, 
  { 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x78, 0x6C, 0x66 }, 
  { 0x00, 0x3C, 0x66, 0x60, 0x3C, 0x06, 0x66, 0x3C }, 
  { 0x00, 0x7E, 0x5A, 0x18, 0x18, 0x18, 0x18, 0x18 }, 
  { 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3E }, 
  { 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18 }, 
  { 0x00, 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63 }, 
  { 0x00, 0x63, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x63 }, 
  { 0x00, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18 }, 
  { 0x00, 0x7E, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x7E }, 
  { 0x00, 0x1E, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1E }, 
  { 0x00, 0x00, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x00 }, 
  { 0x00, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78 }, 
  { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x00, 0x00 }, 
  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F }, 
  { 0x00, 0x0C, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00 }, 
  { 0x00, 0x00, 0x00, 0x3C, 0x06, 0x3E, 0x66, 0x3E }, 
  { 0x00, 0x60, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x7C }, 
  { 0x00, 0x00, 0x00, 0x3C, 0x66, 0x60, 0x66, 0x3C }, 
  { 0x00, 0x06, 0x06, 0x06, 0x3E, 0x66, 0x66, 0x3E }, 
  { 0x00, 0x00, 0x00, 0x3C, 0x66, 0x7E, 0x60, 0x3C }, 
  { 0x00, 0x1C, 0x36, 0x30, 0x30, 0x7C, 0x30, 0x30 }, 
  { 0x00, 0x00, 0x3E, 0x66, 0x66, 0x3E, 0x06, 0x3C }, 
  { 0x00, 0x60, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66 }, 
  { 0x00, 0x00, 0x18, 0x00, 0x18, 0x18, 0x18, 0x3C }, 
  { 0x00, 0x0C, 0x00, 0x0C, 0x0C, 0x6C, 0x6C, 0x38 }, 
  { 0x00, 0x60, 0x60, 0x66, 0x6C, 0x78, 0x6C, 0x66 }, 
  { 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18 }, 
  { 0x00, 0x00, 0x00, 0x63, 0x77, 0x7F, 0x6B, 0x6B }, 
  { 0x00, 0x00, 0x00, 0x7C, 0x7E, 0x66, 0x66, 0x66 }, 
  { 0x00, 0x00, 0x00, 0x3C, 0x66, 0x66, 0x66, 0x3C }, 
  { 0x00, 0x00, 0x7C, 0x66, 0x66, 0x7C, 0x60, 0x60 }, 
  { 0x00, 0x00, 0x3C, 0x6C, 0x6C, 0x3C, 0x0D, 0x0F }, 
  { 0x00, 0x00, 0x00, 0x7C, 0x66, 0x66, 0x60, 0x60 }, 
  { 0x00, 0x00, 0x00, 0x3E, 0x40, 0x3C, 0x02, 0x7C }, 
  { 0x00, 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x18 }, 
  { 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x3E }, 
  { 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x3C, 0x18 }, 
  { 0x00, 0x00, 0x00, 0x63, 0x6B, 0x6B, 0x6B, 0x3E }, 
  { 0x00, 0x00, 0x00, 0x66, 0x3C, 0x18, 0x3C, 0x66 }, 
  { 0x00, 0x00, 0x00, 0x66, 0x66, 0x3E, 0x06, 0x3C }, 
  { 0x00, 0x00, 0x00, 0x3C, 0x0C, 0x18, 0x30, 0x3C }, 
  { 0x00, 0x0E, 0x18, 0x18, 0x30, 0x18, 0x18, 0x0E }, 
  { 0x00, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18 }, 
  { 0x00, 0x70, 0x18, 0x18, 0x0C, 0x18, 0x18, 0x70 }, 
  { 0x00, 0x00, 0x00, 0x3A, 0x6C, 0x00, 0x00, 0x00 }, 
  { 0x00, 0x08, 0x1C, 0x36, 0x63, 0x41, 0x41, 0x7F }
};
*/

/* draw a string */
void 
render_write_text(uint8_t size, char *text, uint32_t col, uint32_t x, uint32_t y)
{
	char *str = text;
	uint32_t cx = x;
	
	while(*str != '\0')
	{
		render_write_letter(size, *str, col, cx, y);
		cx = cx + 8;
		str++;
	}
}



/* draw a letter */
void 
render_write_letter(uint8_t size, char letter, uint32_t col, uint32_t x, uint32_t y)
{
	char *let_data;
	
	if(size == 16) let_data = default_font_8x16[letter];
	else if (size == 8) let_data = default_font_8x8[letter];
	
	
	int i;
	int j;
	
	for(i = 0; i < size; i++)
	{
		for(j = 0; j < 8; j++)
		{			
			if((let_data[i] & (1 << j)) > 0)
				render_draw_pixel(x+j, y+i-4, (uint32_t) col);
		}
	}
}


/* draw a line */
void 
render_draw_line(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t col)
{
	uint32_t x = x0;
	uint32_t y = y0;
	
	while(x < x1 || y < y1)
	{
		uint32_t c = (vesa_get_pixel(x0, y0) + col) / 2;
		
		render_draw_pixel(x, y, col);
		
		if(x < x1) x++;
		if(y < y1) y++;
	}
}

/* draw a rect */
void 
render_draw_rect(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t col)
{
	render_draw_line(x0, y0, x0, y1, col);
	render_draw_line(x0, y0, x1, y0, col);
	
	render_draw_line(x1, y0, x1, y1, col);
	render_draw_line(x0, y1, x1, y1, col);	
}


/* draw a fill rect */
void 
render_draw_rect_fill(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t fill)
{
	while(y0 <= y1)
	{
		render_draw_line(x0, y0, x1, y0, fill);	
		y0++;
	}
}



/* draw a fill rect with gradint */
void 
render_draw_rect_fill_gradient(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint32_t c1, uint32_t c2)
{
	//double gr = ((c2 - c1) * (c2 - c1) / (c2 - c1)) / ((y1 - y0) * (y1 - y0) / (y1 - y0));
	uint32_t gr = (c2 - c1) / (y1 - y0);
	uint32_t cur = c1;
	
	while(y0 <= y1)
	{
		render_draw_line(x0, y0, x1, y0, (uint32_t) cur);
		cur = cur + gr;
		y0++;
	}
}


/* draw a rect a fill rect with border */
void 
render_draw_rect_bordered(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, 
								uint8_t border_pix, uint32_t border, uint32_t fill)
{
	render_draw_rect_fill(x0, y0, x1, y1, fill);
	render_draw_rect(x0, y0, x1, y1, border);
}


/* draw a gradient rect with border */
void 
render_draw_rect_bordered_gradient(uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, 
								uint8_t border_pix, uint32_t border, uint32_t col1, uint32_t col2)
{
	render_draw_rect_fill_gradient(x0, y0, x1, y1, col1, col2);
	render_draw_rect(x0, y0, x1, y1, border);
}






/* draw a bitmap */
void 
render_bit_map(uint32_t *data, uint32_t x, uint32_t y, uint32_t sx, uint32_t sy)
{	
	gimp_image g;
	
	g.width = sx;
	g.height = sy;
	g.pixel_data = (char *) data;
	g.bytes_per_pixel = 4;
	
	render_gimp_image(&g, x, y);
}



/* draw a gimp image */
void 
render_gimp_image(gimp_image *gi, uint32_t x, uint32_t y)
{
	uint32_t i,j;
	
	for(i = 0; i < gi->height; i++)
		for(j = 0; j < gi->width; j++)
		{
			uint32_t col = 
				(gi->pixel_data[((i*4*gi->width)+j*4)+3] << 24) +
				(gi->pixel_data[((i*4*gi->width)+j*4)+1] << 8) +
				(gi->pixel_data[((i*4*gi->width)+j*4)+2] << 0)  + 
				(gi->pixel_data[(i*4*gi->width)+j*4] << 16);
			
			if(col != 0)	
				render_draw_pixel(x + j, y + i, col); 	
		}	
}


/* get a pixel */
uint32_t 
render_get_pixel(uint32_t x, uint32_t y)
{
	return vesa_get_pixel(x, y);
}


/* draw a pixel */
void 
render_draw_pixel(uint32_t x, uint32_t y, uint32_t cl)
{
	vesa_draw_pixel(x, y, cl);
}



/* draw the cursor */
void 
render_draw_cursor(uint32_t x, uint32_t y)
{
		render_draw_line(x - 5, y - 1, x + 5, y - 1, 0x0);
		render_draw_line(x - 5, y, x + 5, y, 0xFFFFFF);
		render_draw_line(x - 5, y + 1, x + 5, y + 1, 0x0);
		render_draw_line(x - 1, y - 5, x - 1, y + 5, 0x0);
		render_draw_line(x + 1, y - 5, x + 1, y + 5, 0x0);
		render_draw_line(x - 5, y, x + 5, y, 0xFFFFFF);	
		render_draw_line(x, y - 5, x, y + 5, 0xFFFFFF);
}


